package com.zhuss.appconfig;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.zhuss.util.RedisRule;
/**
 * token 工具类
 * @author zhushanshuo
 * @date   2020.01.16 13:01
 */
@Component
public final class TokenProcessor {
	
	@Autowired
	private SystemCache systemCache;
	
	private Cache<String, Object> getCache(Integer system) {
		Cache<String, Object> result = systemCache.runFactory().get(system);
		return result;
	}
	
	public Long getUserId(String token, Integer system) {
		Object userIdObj = getCache(system).get(RedisRule.genLoginTokenKey(token));
		Long userId = null;
		if (userIdObj != null) {
			userId = Long.valueOf(userIdObj + "");
		}
		return userId;
	}
	
	public void setUserId(String token, Long userId, Integer system) {
		getCache(system).set(RedisRule.genLoginTokenKey(token), userId, 60*60*8);
		getCache(system).set(RedisRule.genLoginUserKey(userId), token, 60*60*8);
	}
	
	public void setUserIdForever(String token, Long userId, Integer system) {
		getCache(system).set(RedisRule.genLoginTokenKey(token), userId);
		getCache(system).set(RedisRule.genLoginUserKey(userId), token);
	}
	
	public void delUserId(String token, Long userId, Integer system) {
		getCache(system).del(RedisRule.genLoginTokenKey(token));
		getCache(system).del(RedisRule.genLoginUserKey(userId));
	}
	
}
